As the use of computers has become more and more prevalent, much attention has turned to increasing the efficiency of computer systems by improving the ease with which users may operate the computer. It is widely known that the ability of a user to receive and understand information in order to interact efficiently with the computer is critical to the effectiveness of the computer system. Currently, such interaction is most often achieved through the use of graphic user interfaces ("GUI"): the use of graphic displays in conjunction with a device manipulable by the user for specifying a location on the display (e.g., a mouse or keyboard) and means for "clicking on" that location in order to select an object (e.g., an icon or button graphic) visually associated with that location. Such GUIs typically use windows, tool-bars, pull-down menus, pop-up screens, etc. to increase the ease of using the computer. Two well-known graphic user interfaces include the Apple Macintosh Operating System and Microsoft Windows.
A necessary component of graphic user interfaces is the ability of the computer to generate feedback to the user regarding the operating status of the computer. Two important types of feedback a user generally must have is knowledge whether the computer is executing a particular task at any given time and whether and what commands are available to be used while the computer is executing those tasks.
Typically, the computer informs the user that an operation is in progress by altering the appearance of the cursor associated with the pointing device into a special static or dynamic graphic (such as a watch or a "spinning beach ball"). One problem with this approach is that it may connote to the user that no other actions are possible until the operation is completed. The cursor is the primary interface element for the user. The user will likely interpret the disappearance or alteration of the appearance of the cursor to mean that no other interactions or operations are possible. Thus, a user may waste time waiting for the operation to finish and the cursor to change back before proceeding with another action. Using a generic cursor change as a progress indicator also gives the user little information regarding which command is being executed.
Another approach has been to use a special dialog window to indicate the progress of an operation. The dialog box may contain some animated graphic, such as a "thermometer," that "fills up" as the operation progresses. As with the other types of progress indicators, the use of the dialog window connotes to the user that no other actions may be conducted while the operation is in progress. For example, dialog windows may block portions of the display containing otherwise selectable command icons, thereby giving the user the impression that those functions may not be accessed while the dialog window is in place. Finally, dialog boxes tend to clutter up the screen.
The weaknesses of these prior art progress indicators can be explained, in part, by the fact that they were originally designed for and implemented in single-tasking computer environments. In early single-tasking computers (such as the first Apple Macintoshes), no other commands could be used while an operation was still in progress. Thus, it did not matter than cursor changes and dialog windows connoted to the user that no other computer functions could be utilized. These same types of progress indicators, however, continued to be used when computers became multi-tasking (i.e., the computer was capable of running more than one application at a time) and multi-threaded (i.e., the computer was capable of executing multiple operations within a single application context). In this context, the progress indicators tend falsely to lead the user to believe that only one operation may be conducted at a time.
Some GUIs utilize sustained highlighting of graphic icons while their commands are in progress. This approach also connotes to the user that no other functions may be activated until the operation has completed.
Another method of communicating the operating status of the computer to the user in a multi-threaded computer environment is to change the cursor (e.g., into a watch or hourglass) only when it passes over a predesignated area on the video display representing a command in progress. Typically the predesignated area representing a command in progress is the same button graphic which the user must click to execute the command. The disadvantage of this type of indicator is that the user will not know which, if any, commands are in progress until he or she passes the cursor over each of the button graphics on the screen. Thus, the user must waste time positioning the cursor from one button to the next in order to determine which commands are being executed at any given time.
The Network Computer ("NC") environment poses additional challenges with respect to providing user feedback for command execution delays and lengthy operations. An NC differs from a traditional personal computer in that the NC has no permanent local storage. Instead, the NC obtains its software (e.g., operating system and applications) and data as needed over a network from a central server. Accordingly, some commands may take longer to execute on an NC than on a typical personal computer because software and data must be loaded across the network from a server. The length of the delay for any particular command operation is highly unpredictable because it depends on the speed of the network, the network traffic and the processing resources available at the time.
This type of delay in the NC environment may even affect the use of PC-style progress dialogs themselves in that it may take a significant amount of time simply to load the classes necessary to generate a dialog window on the visual display, in order to inform the user that an operation is in progress. Additionally, a "thermometer" type window is particularly inappropriate to indicate operations processed on the central server because the local computer does not have sufficient access to the processing information on the server.
Finally, the increased delays in the multi-tasking, multi-threaded NC environment only amplifies the shortcomings of using a cursor change as a progress indicator. Because a cursor change may lull the user erroneously into thinking no other functions may be used while the cursor is altered, any added delay in processing means more time potentially wasted by the user waiting for the cursor to return to its previous form. Similarly, because a cursor change does not give the user information regarding which commands are in progress, any increase in the delay will increase the likelihood that the user will become confused as to which commands he has or has not executed.
Accordingly, there is a need for improved progress indicators in a GUI.